"""
SAM 图片分割工具 - 主程序入口
"""

import tkinter as tk
import sys
from pathlib import Path

# 添加 src 目录到路径
sys.path.insert(0, str(Path(__file__).parent))

from src.ui import MainWindow
from src.utils import Config, setup_logger

# 导入ttkbootstrap主题
try:
    import ttkbootstrap as ttk
    USE_THEME = True
except ImportError:
    USE_THEME = False

# 导入拖拽支持
try:
    from tkinterdnd2 import TkinterDnD
    DRAG_DROP_AVAILABLE = True
except ImportError:
    DRAG_DROP_AVAILABLE = False
    TkinterDnD = None


def main():
    """主函数"""
    # 加载配置
    config = Config()
    
    # 设置日志
    logger = setup_logger("SAMTool", config)
    
    logger.info("=" * 60)
    logger.info(f"启动 {config.get('app.name', 'SAM Tool')} v{config.get('app.version', '4.0')}")
    logger.info("=" * 60)
    
    # 创建主窗口（使用主题 + 拖拽支持）
    if USE_THEME:
        # 使用ttkbootstrap的主题，推荐主题: darkly, cosmo, flatly, journal, litera, lumen, minty, pulse, sandstone, united, yeti, morph, simplex, cerculean
        if DRAG_DROP_AVAILABLE:
            # 创建支持拖拽的窗口（继承TkinterDnD.Tk）
            class DnDWindow(TkinterDnD.Tk, ttk.Window):
                def __init__(self, themename="cosmo"):
                    TkinterDnD.Tk.__init__(self)
                    ttk.Window.__init__(self, themename=themename)
            try:
                root = ttk.Window(themename="cosmo")
                # 手动启用拖拽功能
                TkinterDnD._require(root)
                logger.info("已启用 ttkbootstrap 主题: cosmo + 拖拽支持")
            except Exception as e:
                logger.warning(f"启用拖拽失败，使用标准主题窗口: {e}")
                root = ttk.Window(themename="cosmo")
                logger.info("已启用 ttkbootstrap 主题: cosmo")
        else:
            root = ttk.Window(themename="cosmo")
            logger.info("已启用 ttkbootstrap 主题: cosmo")
    else:
        if DRAG_DROP_AVAILABLE:
            root = TkinterDnD.Tk()
            logger.info("已启用拖拽支持")
        else:
            root = tk.Tk()
            logger.warning("未安装 ttkbootstrap 和 tkinterdnd2，使用默认主题")
    
    app = MainWindow(root, config)
    
    # 运行主循环
    try:
        root.mainloop()
    except KeyboardInterrupt:
        logger.info("用户中断程序")
    except Exception as e:
        logger.error(f"程序异常退出: {e}", exc_info=True)
    finally:
        logger.info("程序退出")


if __name__ == "__main__":
    main()

